package com.hmy.finance.service.statement.dto;

import com.hmy.finance.common.enums.StatementStatusEnum;
import com.hmy.finance.api.bo.core.request.enums.StatementTypeEnum;
import com.hmy.finance.dal.po.json.*;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 对账单主单dto
 */
@Data
public class ReconciliationStatementDto {

    /**
     * 客户ID
     */
    private Long customerId;

    /**
     * 客户名称（签约人2）
     */
    private String customerName;

    /**
     * 签约人ID
     */
    private Long signatoryId;

    /**
     * 客户联系人名称（签约人1）
     */
    private String signatoryName;

    /**
     * 项目名称拼接
     */
    private String projectName;

    /**
     * 对账开始时间
     */
    private LocalDateTime reconciliationStartDate;

    /**
     * 对账结束时间
     */
    private LocalDateTime reconciliationEndDate;

    /**
     * 本期费用合计(入库)
     */
    private BigDecimal reconciliationTotalAmount;

    /**
     * excel展示用费用合计
     */
    private BigDecimal displayReconciliationTotalAmount;

    /**
     * 本期费用小计
     */
    private FeeDetailJson reconciliationSubtotal;

    /**
     * 账单内的调整数据(contractProFitLossMap的sum数据)
     */
    private ReconciliationAdjustJson reconciliationAdjust;

//    /**
//     *
//     */
//    private ReconciliationAdjustJson reconciliationAdjustJson;

    /**
     * 本期费用(本期费用小计+本期费用调整)
     */
    private FeeDetailJson reconciliationAmount;

    /**
     * 往期已对账金额
     */
    private BigDecimal reconciliationedTotalAmount;

    /**
     * 合同下总金额
     */
    private BigDecimal contractTotalAmount;

    /**
     * 账单日期
     */
    private LocalDateTime statementDate;

    /**
     * 账单类型（1-月结，2-期结，3-总账单，4-自由账单）
     */
    private StatementTypeEnum statementType;

    /**
     * Excel中是否展示进场运费
     */
    private Boolean displayEntryShippingFee2Excel;

    /**
     * Excel中是否展示退场运费
     */
    private Boolean displayModificationFee2Excel;

    /**
     * 对账单签署单据ID
     */
    private Long contractId;

    /**
     * 对账单签署单据No
     */
    private String contractNo;

    /**
     * 对账单签署单据签署链接
     */
    private String contractSignUrl;

    /**
     * 账单Excel地址
     */
    private String statementOssUrl;

    /**
     * 对账单状态（0-未签署，1-已签署，9-已作废）
     */
    private StatementStatusEnum statementStatus;

    /**
     * 客户扩展信息（包含客户编号、 客户名称 、客户类型、 签约人名称、 签约人手机号 ）
     */
    private CustomerExtensionInfoJson customerExtensionInfo;

//    /**
//     * 合同扩展信息
//     */
//    private ContractExtensionInfoJson contractExtensionInfo;

    /**
     * 销售经理ID
     */
    private Long saleManagerId;

    /**
     * 销售经理姓名
     */
    private String saleManagerName;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 对账单备注
     */
    private String mark;

    /**
     * 调整损益数据
     */
    private List<ContractProFitLossDto> contractProFitLosses;

    /**
     * 设备对账单详情
     */
    private List<ReconciliationDeviceStatementDto> deviceRentalStatementDetails;

}